14.6 Socket 应用结构体传输 | 您所在的位置:网站首页 › udp 传输结构体 › 14.6 Socket 应用结构体传输 |
当在套接字编程中传输结构体时,可以将结构体序列化为字符串(即把结构体的所有成员打包成一个字符串),然后将字符串通过套接字传输到对端,接收方可以将字符串解析为结构体,然后使用其中的成员数据。这种方法通常被称为序列化(Serialization)和反序列化(Deserialization),本章中我们可以采用将一个结构体序列化为一个纯字符串,然后将该字符串通过套接字传输给对端,当对端收到后只需要将字节序强制转换为对等的结构体指针即可实现对该结构的解析。 14.6.1 服务端实现首先来看服务端的实现流程,笔者定义了message结构体变量,代码中在接收到套接字传输过来的字符串之后,通过(message*)recv_buf的方式将该套接字强制转换为一个结构体指针,并赋值给message* msg指针,此时在服务端则可通过->的方式输出当前结构体内的完整成员参数。 #include #include #pragma comment(lib,"ws2_32.lib") // 定义一个自定义结构体 typedef struct { unsigned short uuid; char HostName[32]; char Buffer[32]; struct { char HostAddress[1024]; char HostPassword[1024]; char HostPort[1024]; }HostInfo; unsigned short cmd_type; }message; int main(int argc, char* argv[]) { WSADATA WSAData; SOCKET sock; WSAStartup(MAKEWORD(2, 0), &WSAData); sock = socket(AF_INET, SOCK_STREAM, 0); if (sock == INVALID_SOCKET) { std::cout |
CopyRight 2018-2019 实验室设备网 版权所有 |